import hashlib
import json

from util.getlog import get_log
from configs import globalVariables

class Md5Encryption(object):
    def __init__(self):
        self.uuid = "6e5e9058b7d745ada3fc4ecaaca9b854"
        self.timeStamp = "1618281515373"

    def getAutograph(self,requestJson):
        if isinstance(requestJson,dict):
            requestJson = json.dumps(requestJson, sort_keys=True, indent = 4)

        m = hashlib.md5()  # 先定义一个加密方式
        m.update(requestJson.encode("utf8")) #进行md5加密
        firstSign = m.hexdigest() # 返回生成的第一次加密结果firstSign
        #将加密结果写入log
        #self.log.info("firstSign is: " + firstSign)

        secondStr = firstSign + self.uuid + self.timeStamp # 第一次加密结果拼接uuid和时间戳，如 firstSign+uuid+timeStamp .生成字符串sencondStr
        m = hashlib.md5()  # 先定义一个加密方式
        m.update(secondStr.encode("utf8"))  # 对生成的字符串sencondStr再次加密生第二次的签名
        secondSign = m.hexdigest() #返回生成的第二次加密结果sencondSign
        # 将加密结果写入log
        #self.log.info("secondSign is: " + secondSign)

        # 截取最终签名sencondSign的0-10位作为start，10-22位middle，22-32位为end
        # 再次拼接，方式：start+uuid+middle+timestamp+end   生成最终要传递的签名值finalSign，长度为77
        sLen = len(secondSign)
        finalSign = secondSign[0:10] + self.uuid + secondSign[10:(sLen-10)] + self.timeStamp + secondSign[(sLen-10):sLen]
        # 将加密结果写入log
        # globalVariables.info("finalSign is: " + finalSign)

        return finalSign

if __name__ == "__main__":
    test_Md5Encryption = Md5Encryption()
    result = test_Md5Encryption.getAutograph(" {\"pageSize\": 50, \"pageNum\": 1, \"menuCode\": \"FC_HRTYRW_005037001\"}")
    # print(result)